home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / games / spassion / source.lzh / SOURCE / zmcall.s < prev   
Text File  |  2000-03-27  |  3KB  |  148 lines

  1. *    zmcall.s    ZMUSIC ver2.x 用関数
  2.  
  3.     .include    IOCSCALL.MAC
  4. *    .include    ZMSCCALL.MAC    * ZMUSIC ver2.0 本に付属のもの
  5. Z_MUSIC macro   func            *ドライバへのファンクションコール・マクロ
  6.         moveq.l #func,d1
  7.         trap    #3
  8.         endm
  9.  
  10.     .xdef    _ZmKeepCheck,_ZmInit,_ZmPlay,_Stop
  11.     .xdef    _ZmAdpcmSE,_FadeOut
  12.     .xdef    _set_zpd
  13.     .xdef    _set_zpd_
  14.  
  15.     .offset    4
  16. par1    ds.l    1
  17.     .text
  18.  
  19.  
  20. _ZmKeepCheck:        * ZMUSIC が常駐しているか調べる
  21.             * out : d0.l = 0 常駐している
  22.             *         < 0  〃 していない
  23.     movem.l    d1/a0-a1,-(sp)
  24.  
  25.     suba.l    a1,a1
  26.     IOCS    _B_SUPER
  27.     move.l    d0,-(sp)        **
  28.  
  29.     moveq.l    #0,d1        * d1.l = 返り値
  30.     move.l    $8c.w,a0
  31.     subq.w    #8,a0
  32.     cmpi.l    #'ZmuS',(a0)+
  33.     bne    1f
  34.     cmpi.w  #'iC',(a0)+
  35.     beq    2f
  36. 1:    moveq.l #-1,d1
  37. 2:
  38.     move.l    (sp)+,d0        **
  39.     bmi    @f            * 既にスーパーだった
  40.     movea.l    d0,a1
  41.     IOCS    _B_SUPER
  42. @@:
  43.  
  44.     move.l    d1,d0
  45.     movem.l    (sp)+,d1/a0-a1
  46.     rts
  47.  
  48.  
  49.  
  50. *********************************************************
  51. _ZmInit:        * 音源/ドライバの初期化
  52. *    Z_MUSIC    m_init
  53.     moveq.l #$00,d1
  54.     trap    #3
  55.     rts
  56.  
  57.  
  58.  
  59. *********************************************************
  60. _ZmPlay:        * .ZMD を演奏する
  61.             * in  :  8(a6) = データのアドレス
  62.             *        べた読みした.ZMD のアドレス(偶数アドレス)を指定
  63.             *    12(a6) = データのサイズ
  64.             * out : d0.l = エラーコード
  65.     link    a6,#0
  66.     movem.l    d1-d2/a0-a1,-(sp)
  67.  
  68.     movea.l    8(a6),a1    * データのアドレス
  69.     adda.w    #7,a1        * ヘッダを飛ばす
  70.     move.l    12(a6),d1    * データのサイズ
  71.     moveq.l    #0,d2        * 高速応答
  72. *    Z_MUSIC    play_cnv_data
  73.     moveq.l #$11,d1
  74.     trap    #3
  75.  
  76.     movem.l    (sp)+,d1-d2/a0-a1
  77.     unlk    a6
  78.     rts
  79.  
  80.  
  81.  
  82. *********************************************************
  83. _Stop:        * 演奏を停止する
  84.     movem.l    d1-d4,-(sp)
  85.  
  86.     moveq.l    #0,d2
  87.     moveq.l    #0,d3
  88.     moveq.l    #0,d4
  89. *    Z_MUSIC    m_stop
  90.     moveq.l #$0A,d1
  91.     trap    #3
  92.  
  93.     movem.l    (sp)+,d1-d4
  94.     rts
  95.  
  96.  
  97.  
  98. *********************************************************
  99. _ZmAdpcmSE:        * ADPCM 効果音の再生
  100.             * in  :  8(a6) = ADPCM データへのポインタ
  101.             *    12(a6) = ADPCM データのサイズ
  102.             *    16(a6) = 周波数*256+PAN
  103.             *    20(a6) = 優先順位
  104.     link    a6,#0
  105.     movem.l    d1-d3/a0-a1,-(sp)
  106.  
  107.     movea.l    8(a6),a1
  108.     move.l    12(a6),d2
  109.     move.w    20+2(a6),d3
  110.     swap.w    d3
  111.     move.w    16+2(a6),d3
  112. *    Z_MUSIC    se_adpcm1
  113.     moveq.l #$13,d1
  114.     trap    #3
  115.  
  116.     movem.l    (sp)+,d1-d3/a0-a1
  117.     unlk    a6
  118.     rts
  119.  
  120.  
  121.  
  122. *********************************************************
  123. _FadeOut:        * フェードアウト
  124.             * in  : 8(a6) = フェードアウト速度(1~85)
  125.     link    a6,#0
  126.     movem.l    d1-d2,-(sp)
  127.  
  128.     move.l    8(a6),d2
  129. *    Z_MUSIC    fade_out
  130.     moveq.l #$1a,d1
  131.     trap    #3
  132.  
  133.     move.l    d1,d0
  134.     movem.l    (sp)+,d1-d2
  135.     unlk    a6
  136.     rts
  137.  
  138. *ZPDデータの情報を登録する
  139. _set_zpd:
  140.     move.l    par1(sp),a1
  141.     Z_MUSIC    $46
  142.     rts
  143.  
  144. _set_zpd_:
  145.     Z_MUSIC    $45
  146.     move.l    par1(sp),56(a0)
  147.     rts
  148.